﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using AG.Modulos.AdministracionDominio.Contratos;
using AG.Modulos.AdministracionDominio.Presentadores;
using System.Data;

namespace WebSite.AdministracionDominio
{
    public partial class GestionarValoresDominio : Page, IGestionarValoresDominio
    {

        private PresentadorGestionarValoresDominio _presentador;
        

        #region Propiedades

        // gridView donde se muestra la lista de dominios seleccionados
        public GridView ListaDominios
        {
            get { return gvListaDominios; }
        }

        // ddl que muestra todos los tipos de dominios existentes
        public DropDownList TiposDeDominioDDL
        {
            get { return ddlDominios; }
            set { ddlDominios = value; }
        }

        //DATA SET que contiene todos los productos del sistema
        public DataSet SessionListaDeDominios
        {
            get { return (DataSet)Session[@"ListaDeDominios"]; }
            set { Session[@"ListaDeDominios"] = value; }
        }

        // Propiedad que guarda la descripcion
        public string DescripcionDominio
        {
            get {return tbDescripcionDominio.Text; }
        }

        //propiedad que guarda el valor del dominio
        public string ValorDominio
        {
            get {return tbValorDominio.Text; }
        }

        //Propiedad que habilita o Deshabilita los compos
        public bool HabilitarCampos
        {
            set 
            { 
                tbDescripcionDominio.Visible = value;
                tbValorDominio.Visible = value;
                lbDescripcionDominio.Visible = value;
                lbValorDominio.Visible = value;
                btnAgregar.Visible = value;
            }
        }
 

        #endregion

        #region Eventos

        protected void Page_Load(object sender, EventArgs e)
        {

          
        }

        protected void Page_Init(object sender, EventArgs e)
        {
            mvGestionarValoresDominio.SetActiveView(vGestionarDominiosVentanaPrincipal);
            _presentador = new PresentadorGestionarValoresDominio(this);
            
            
        }

        /// <summary>
        /// Metodo que agrega un dominio al tipo Seleccionado
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnAgregar_Click(object sender, EventArgs e)
        {
            _presentador.AgregarValorDominio();
        }


        /// <summary>
        /// Evento que se activa al seleccionar una fila del gridView
        /// </summary>
        protected void gvListaDominios_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (null != ListaDominios.SelectedDataKey)
            {
                _presentador.EliminarValorDominio((int)ListaDominios.SelectedDataKey.Value);
            }
        }

        /// <summary>
        /// Evento que se activa al cambiar el item del dropDownList
        /// </summary>
        protected void ddlDominios_SelectedIndexChanged(object sender, EventArgs e)
        {
            _presentador.FiltrarListaDeDominios();
        }


        /// <summary>
        /// metodo que llama a la pantalla para agregar un nuevo tipo de Dominio
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnNuevoTipoDominio_Click(object sender, EventArgs e)
        {

        }


        /// <summary>
        /// Metodo que activa la pantalla de Modificado de dominio
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnModificarValoresDominios_Click(object sender, EventArgs e)
        {
            mvGestionarValoresDominio.SetActiveView(vModificarValoresDominio);
                _presentador.llenarTiposDeDominio();
        }

        #region Paginacion

        /// <summary>
        /// evento que maneja la paginacion
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void gvListaDominios_DataBound(object sender, EventArgs e)
        {
            ConfigurarControles();
        }

        /// <summary>
        /// boton que permite la navegacion hacia atras en el gridView de consulta
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnAnt_Click(object sender, EventArgs e)
        {
            if (gvListaDominios.PageIndex > 0)
                gvListaDominios.PageIndex--;
            gvListaDominios.DataSource = _presentador.FildatdoDeListaDominio();
            gvListaDominios.DataBind();
            ConfigurarControles();
        }

        /// <summary>
        /// boton que permite la navegacion hacia adelante en el gridView de consulta
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnSig_Click(object sender, EventArgs e)
        {
            if (gvListaDominios.PageIndex < gvListaDominios.PageCount)
                gvListaDominios.PageIndex++;
            gvListaDominios.DataSource = _presentador.FildatdoDeListaDominio();
            gvListaDominios.DataBind();
            ConfigurarControles();
        }

#endregion

        #endregion



        #region Metodos

        /// <summary>
        /// metodo que configura el paginado del gridview
        /// </summary>
        protected void ConfigurarControles()
        {
            if(null!=(DataSet)gvListaDominios.DataSource)
            {
                int productos = (gvListaDominios.PageIndex + 1)*gvListaDominios.PageSize;
                if (productos > ((DataSet) gvListaDominios.DataSource).Tables[0].Rows.Count)
                    productos = ((DataSet) gvListaDominios.DataSource).Tables[0].Rows.Count;

                lbInfoPaginado.Visible = gvListaDominios.PageCount >= 1;
                if (gvListaDominios.DataSource != null)
                    lbInfoPaginado.Text = string.Format(App_GlobalResources.AG.EtiquetaFormatoPaginado,
                                                        gvListaDominios.PageIndex + 1, gvListaDominios.PageCount,
                                                        productos,
                                                        ((DataSet) gvListaDominios.DataSource).Tables[0].Rows.Count);
                btnAnt.Visible = (gvListaDominios.PageIndex > 0);
                btnSig.Visible = (gvListaDominios.PageIndex < gvListaDominios.PageCount - 1) &&
                                 (gvListaDominios.PageCount > 1);
            }
            else
            {
                btnAnt.Visible = false;
                btnSig.Visible = false;
                lbInfoPaginado.Visible = false;
            }

        }



        #endregion
    }
}